package com.beiming.libra.service.impl;

import com.beiming.libra.common.enums.StatusEnum;
import com.beiming.libra.common.utils.CommonsUtils;
import com.beiming.libra.dao.ArbitrationCaseArgumentMapper;
import com.beiming.libra.domain.ArbitrationCaseArgument;
import com.beiming.libra.domain.dto.requestdto.CaseArgumentRequestDTO;
import com.beiming.libra.service.ArbitrationCaseArgumentService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;

/**
 * @author zhengyu
 * @title
 * @create_time 2018/6/1
 */
@Slf4j
@Service
public class ArbitrationCaseArgumentServiceImpl implements ArbitrationCaseArgumentService {
  @Autowired
  private ArbitrationCaseArgumentMapper arbitrationCaseArgumentMapper;

  /**
   * 答辩书获取服务
   * @param caseId 案件申请书id
   */
  @Override
  public List<ArbitrationCaseArgument> listArbitrationCaseArguments(String caseId) {
    List<ArbitrationCaseArgument> result = new ArrayList<ArbitrationCaseArgument>();
    ArbitrationCaseArgument aca = new ArbitrationCaseArgument();
    aca.setCaseId(caseId);
    aca.setStatus(StatusEnum.USED.getCode());
    result = arbitrationCaseArgumentMapper.select(aca);
    return result;
  }

  /**
   * 答辩书获取服务
   *
   * @param caseId 案件申请书id
   * @param userId  用户id
   */
  @Override public ArbitrationCaseArgument getArbitrationCaseArgument(String caseId,
      String userId) {
    List<ArbitrationCaseArgument> result = new ArrayList<ArbitrationCaseArgument>();
    ArbitrationCaseArgument aca = new ArbitrationCaseArgument();
    aca.setCaseId(caseId);
    aca.setArgumentPersonId(userId);
    aca.setStatus(StatusEnum.USED.getCode());
    result = arbitrationCaseArgumentMapper.select(aca);
    if (result.isEmpty()) {
      return null;
    }
    return result.get(0);
  }

  /**
   * 答辩书精确获取服务
   *
   * @param id id
   */
  @Override
  public ArbitrationCaseArgument getArbitrationCaseArgument(String id) {
    return arbitrationCaseArgumentMapper.selectByPrimaryKey(id);
  }

  /**
   * 保存答辩书
   *
   * @param caseArgumentRequestDTO 新答辩书
   */
  @Override
  public void saveArbitrationCaseArgument(CaseArgumentRequestDTO caseArgumentRequestDTO) {
    ArbitrationCaseArgument arbitrationCaseArgument = new ArbitrationCaseArgument();
    arbitrationCaseArgument.setCaseId(caseArgumentRequestDTO.getCaseId());
    arbitrationCaseArgument.setArgumentContent(caseArgumentRequestDTO.getArgumentContent());
    arbitrationCaseArgument.setArgumentPersonId(caseArgumentRequestDTO.getUserId());
    arbitrationCaseArgument.setId(CommonsUtils.get32BitUUID());
    arbitrationCaseArgumentMapper.insert(arbitrationCaseArgument);
  }

  /**
   * 修改答辩书
   *
   * @param arbitrationCaseArgument 答辩书
   */
  @Override
  public void updateArbitrationCaseArgument(ArbitrationCaseArgument arbitrationCaseArgument) {
    ArbitrationCaseArgument arbitrationCaseArgumentOld = arbitrationCaseArgumentMapper.selectByPrimaryKey(
        arbitrationCaseArgument.getId());
    if ( null == arbitrationCaseArgumentOld) {
      log.error("编号为[" + arbitrationCaseArgument.getId() + "]的答辩书不存在");
      throw new NullPointerException("答辩书不存在");
    }
    arbitrationCaseArgumentMapper.updateByPrimaryKey(arbitrationCaseArgument);
  }

}
